SET XACT_ABORT on
BEGIN TRANSACTION

ALTER TABLE p_soggetti NOCHECK CONSTRAINT FK_p_soggetti_agenzi
ALTER TABLE p_polizze NOCHECK CONSTRAINT FK_p_polizze_new_p_soggetti
ALTER TABLE p_targhe_caricatori NOCHECK CONSTRAINT FK_p_targhe_caricatori_p_soggetti
ALTER TABLE biglie NOCHECK CONSTRAINT FK_biglie_agenzi

DECLARE @NEWCODAGE VARCHAR(6)='MC0520'
DECLARE @OLDCODAGE VARCHAR(6)='MC520' 
DECLARE @CODPREN VARCHAR(14)='VLV21206130011'
DECLARE @IDPOLIZZA INT=8288
DECLARE @MSG VARCHAR(100)

UPDATE p_soggetti SET CODAGE=@NEWCODAGE WHERE CODAGE=@OLDCODAGE
IF @@ERROR<>0
BEGIN
	SELECT @MSG='P_SOGGETTI'
	GOTO ON_ERROR
END

UPDATE AGENZI SET CODAGE=@NEWCODAGE WHERE CODAGE=@OLDCODAGE
IF @@ERROR<>0
BEGIN
	SELECT @MSG='AGENZI'
	GOTO ON_ERROR
END

UPDATE biglietti SET CODAGE_EMISS=@NEWCODAGE, CODAGE_STAMPA=@NEWCODAGE WHERE CODPREN=@CODPREN
IF @@ERROR<>0
BEGIN
	SELECT @MSG='BIGLIETTI'
	GOTO ON_ERROR
END

UPDATE movimenti SET CODAGE=@NEWCODAGE WHERE CODPREN=@CODPREN
IF @@ERROR<>0
BEGIN
	SELECT @MSG='MOVIMENTI'
	GOTO ON_ERROR
END

UPDATE biglie SET CODAGE=@NEWCODAGE WHERE CODPREN=@CODPREN
IF @@ERROR<>0
BEGIN
	SELECT @MSG='BIGLIE'
	GOTO ON_ERROR
END

UPDATE p_polizze SET CODCARICATORE=@NEWCODAGE, CODRICEVITORE=@NEWCODAGE WHERE IDPOLIZZA=@IDPOLIZZA
IF @@ERROR<>0
BEGIN
	SELECT @MSG='P_POLIZZE'
	GOTO ON_ERROR
END

ALTER TABLE biglie CHECK CONSTRAINT FK_biglie_agenzi
ALTER TABLE p_soggetti CHECK CONSTRAINT FK_p_soggetti_agenzi
ALTER TABLE p_targhe_caricatori CHECK CONSTRAINT FK_p_targhe_caricatori_p_soggetti
ALTER TABLE p_polizze CHECK CONSTRAINT FK_p_polizze_new_p_soggetti

COMMIT TRANSACTION
RETURN

ON_ERROR:
	ROLLBACK TRANSACTION
	RAISERROR 55555 @MSG
	
GO